@@ -17,7 +17,7 @@ from django.conf import settings |
||
| 17 | 17 |
from pywe_token import access_token |
| 18 | 18 |
from pywe_storage import RedisStorage |
| 19 | 19 |
|
| 20 |
-from account.models import AdministratorInfo |
|
| 20 |
+from account.models import AdministratorInfo, UserInfo |
|
| 21 | 21 |
from goods.models import GoodsInfo, PackInfo |
| 22 | 22 |
from kol.models import KOLInfo |
| 23 | 23 |
from pay.models import OrderInfo |
@@ -337,6 +337,102 @@ def live_order_list(request): |
||
| 337 | 337 |
}) |
| 338 | 338 |
|
| 339 | 339 |
@logit(res=True) |
| 340 |
+def live_order_delivery(request): |
|
| 341 |
+ admin_id = request.POST.get('admin_id', '')
|
|
| 342 |
+ order_id = request.POST.get('order_id', '')
|
|
| 343 |
+ user_id = request.POST.get('user_id', '')
|
|
| 344 |
+ |
|
| 345 |
+ delivery_id = request.POST.get('delivery_id', '')
|
|
| 346 |
+ biz_id = request.POST.get('biz_id', '')
|
|
| 347 |
+ |
|
| 348 |
+ try: |
|
| 349 |
+ administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True) |
|
| 350 |
+ except AdministratorInfo.DoesNotExist: |
|
| 351 |
+ return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND) |
|
| 352 |
+ |
|
| 353 |
+ user = UserInfo.objects.get(user_id=user_id, status=True) |
|
| 354 |
+ |
|
| 355 |
+ order = RoomOrderInfo.objects.get(order_id=order_id, status=True) |
|
| 356 |
+ |
|
| 357 |
+ goods = liveGoodsInfo.objects.get(goods_id=order.goods_id, status=True) |
|
| 358 |
+ |
|
| 359 |
+ wxcfg = WECHAT.get('MINIAPP', {})
|
|
| 360 |
+ |
|
| 361 |
+ appid = wxcfg.get('appID')
|
|
| 362 |
+ secret = wxcfg.get('appsecret')
|
|
| 363 |
+ token = access_token(appid, secret) |
|
| 364 |
+ |
|
| 365 |
+ data = {
|
|
| 366 |
+ 'add_source': 0, |
|
| 367 |
+ 'order_id': order_id, |
|
| 368 |
+ 'openid': user.openid, |
|
| 369 |
+ 'delivery_id': delivery_id, |
|
| 370 |
+ 'biz_id': biz_id, |
|
| 371 |
+ 'custom_remark': goods.name + ' x' + str(order.amount), |
|
| 372 |
+ 'sender': {
|
|
| 373 |
+ 'name': '孔令朋', |
|
| 374 |
+ 'tel': '15117949737', |
|
| 375 |
+ 'company': '', |
|
| 376 |
+ 'province': '北京市', |
|
| 377 |
+ 'city': '北京市', |
|
| 378 |
+ 'area': '海淀区', |
|
| 379 |
+ 'address': '四季青路8号郦城工作区地下一层1号门', |
|
| 380 |
+ }, |
|
| 381 |
+ 'receiver': {
|
|
| 382 |
+ 'name': order.name, |
|
| 383 |
+ 'tel': order.phone, |
|
| 384 |
+ 'company': '', |
|
| 385 |
+ 'province': order.province, |
|
| 386 |
+ 'city': order.city, |
|
| 387 |
+ 'area': order.county, |
|
| 388 |
+ 'address': order.address, |
|
| 389 |
+ }, |
|
| 390 |
+ 'cargo': {
|
|
| 391 |
+ 'count': 1, |
|
| 392 |
+ 'weight': 5, |
|
| 393 |
+ 'spaceX': 10, |
|
| 394 |
+ 'spaceY': 10, |
|
| 395 |
+ 'spaceZ': 10, |
|
| 396 |
+ 'detail_list': [{
|
|
| 397 |
+ 'name': goods.name, |
|
| 398 |
+ 'count': order.amount, |
|
| 399 |
+ }] |
|
| 400 |
+ }, |
|
| 401 |
+ 'shop': {
|
|
| 402 |
+ 'wxa_path': 'pages/live/anchorHome/anchorHome?anchor_id='+order.anchor_id, |
|
| 403 |
+ 'img_url': goods.goods_img_url, |
|
| 404 |
+ 'goods_name': goods.name, |
|
| 405 |
+ 'goods_count': order.amount, |
|
| 406 |
+ }, |
|
| 407 |
+ 'insured': {
|
|
| 408 |
+ 'use_insured': 0, |
|
| 409 |
+ 'insured_value': 0, |
|
| 410 |
+ }, |
|
| 411 |
+ 'service': {
|
|
| 412 |
+ 'service_type': 3, |
|
| 413 |
+ 'service_name': '顺丰标快', |
|
| 414 |
+ }, |
|
| 415 |
+ 'expect_time': 0 |
|
| 416 |
+ } |
|
| 417 |
+ |
|
| 418 |
+ res = requests.post(url=('https://api.weixin.qq.com/cgi-bin/express/business/order/add?access_token=' + token), data=json.dumps(data, ensure_ascii=False).encode("utf-8")).text
|
|
| 419 |
+ res = json.loads(res) |
|
| 420 |
+ errCode = res.get('errcode', 0)
|
|
| 421 |
+ |
|
| 422 |
+ if errCode != 0: |
|
| 423 |
+ errMsg = res.get('errmsg', '')
|
|
| 424 |
+ deliveryResultcode = res.get('delivery_resultcode', '')
|
|
| 425 |
+ deliveryResultmsg = res.get('delivery_resultmsg', '')
|
|
| 426 |
+ return response(errCode, errMsg, str(deliveryResultcode) + ':' + deliveryResultmsg) |
|
| 427 |
+ |
|
| 428 |
+ order.tracking_number = res.get('waybill_id', '')
|
|
| 429 |
+ order.save() |
|
| 430 |
+ |
|
| 431 |
+ return response(200, 'Live Order Delivery Success', '直播订单下单成功', data={
|
|
| 432 |
+ 'order': order.admindata |
|
| 433 |
+ }) |
|
| 434 |
+ |
|
| 435 |
+@logit(res=True) |
|
| 340 | 436 |
def fetch_wx_room_list(request): |
| 341 | 437 |
admin_id = request.POST.get('admin_id', '')
|
| 342 | 438 |
try: |
@@ -51,7 +51,9 @@ urlpatterns += [ |
||
| 51 | 51 |
url(r'^admin/live/goods/audit$', admin_views.live_goods_audit, name='live_goods_audit'), |
| 52 | 52 |
|
| 53 | 53 |
url(r'^admin/live/room/list$', admin_views.live_room_list, name='live_room_list'), # 直播间列表 |
| 54 |
- url(r'^admin/live/order/list$', admin_views.live_order_list, name='live_order_list'), # 直播间列表 |
|
| 54 |
+ |
|
| 55 |
+ url(r'^admin/live/order/list$', admin_views.live_order_list, name='live_order_list'), # 直播间订单列表 |
|
| 56 |
+ url(r'^admin/live/order/delivery$', admin_views.live_order_delivery, name='live_order_delivery'), # 直播间订单发货 |
|
| 55 | 57 |
|
| 56 | 58 |
#微信直播 api |
| 57 | 59 |
url(r'^admin/live/wx/room/list$', admin_views.fetch_wx_room_list, name='fetch_wx_room_list'), # 微信直播间列表 |
@@ -301,6 +301,7 @@ class RoomOrderInfo(BaseModelMixin): |
||
| 301 | 301 |
'county': self.county, |
| 302 | 302 |
'address': self.address, |
| 303 | 303 |
'tracking_number': self.tracking_number, |
| 304 |
+ 'amount': self.amount, |
|
| 304 | 305 |
'total_fee': self.total_fee, |
| 305 | 306 |
'pay_status': self.pay_status, |
| 306 | 307 |
'paid_at': tc.local_string(utc_dt=self.paid_at, format='%Y-%m-%d %H:%M'), |